#pragma once

namespace krryn{
namespace animation{
	class skeleton;

	class expression{
	public:
		expression(unsigned int a_NumInputs);

		virtual ~expression();

		unsigned int num_inputs() const { return m_NumInputs; }
		void add_input(expression *a_Input, unsigned int a_Idx = 0) { m_Inputs[a_Idx] = a_Input; }
		expression *get_input(unsigned int a_Idx) const { return m_Inputs[a_Idx]; }

		virtual void blend(float a_DT, skeleton *a_Result) = 0;
	private:
		unsigned int m_NumInputs;
		expression **m_Inputs;
	};
}
}